//
//  AppDelegate.swift
//  SinaBlog
//
//  Created by ChenWei on 15/10/2.
//  Copyright © 2015年 cw. All rights reserved.
//

import UIKit

let CWSwitchRootViewControllerNotify = "CWSwitchRootViewControllerNotify"

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        // 0.设置tabBar,navigationBar导航条外观
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        UITabBar.appearance().tintColor = UIColor.orangeColor()
        
        // 1.创建window
        window = UIWindow()
        window?.backgroundColor = UIColor.whiteColor()
        // 2.设置window根控制器
//        window?.rootViewController = MainTabBarController()
        window?.rootViewController = defaultViewController();
        // 3.使windows成为主窗口并可见
        window?.makeKeyAndVisible()
        
        // 4.注册通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("switchRootViewController:"), name:CWSwitchRootViewControllerNotify , object: nil)
        
        return true
    }
    
    /// "switchRootViewController"通知调用方法
    @objc private func switchRootViewController(notify:NSNotification) {
        if notify.object != nil { // 来自自动登陆用户发送的通知-> 进入"欢迎"界面
            window?.rootViewController = WelcomeViewController()
            return
        } else { // 来自手动登陆用户发送的通知-> 进入"首页界面"
            window?.rootViewController = MainTabBarController()
        }
    }
    
    /// 移除通知
    deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
    
    private func defaultViewController()-> UIViewController {
       // 1.判断是否已经登陆过
        if UserAccount.loadAccount() != nil { // 已经登陆过
            return isNewVersion() ? NewfeatureViewController() : WelcomeViewController()
        } else { // 没有登陆过
            return MainTabBarController()
        }
    }

    /// 判断是否有新版本
    private func isNewVersion()-> Bool {
        // 1.获取当前的版本
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        // 2.获取sandBox中保存的上一次运行的版本
        // ??作用:如果前面的值为nil,则返回??后面的值,如果不为nil,则后面的代码不执行.
        let preVersion = NSUserDefaults.standardUserDefaults().valueForKey("PreviousVersionString") ?? ""
        // 3.比较版本号
        if currentVersion.compare(preVersion as! String) == NSComparisonResult.OrderedDescending { // 3.1是新版本
            // 3.1.1更新沙盒中的版本号
            /*
            let defaults = NSUserDefaults.standardUserDefaults()
            defaults.setValue(currentVersion, forKey: "xxoo")
            // iOS7以后就不需要再进行同步
            defaults.synchronize()
            */
            NSUserDefaults.standardUserDefaults().setValue(currentVersion, forKey: "PreviousVersionString")
           
            return true
        }else { // 3.2不是新版本
            return false
        }
    }
}

// MARK:- 自定义Log输出
// 格式:
// <AppDelegate.swift>[28]-test():需要输出的内容
// <文件名称>[行号]-方法名称: 输出内容
func NSLog<T>(fileName: String = __FILE__, line: UInt = __LINE__, MethodName: String =  __FUNCTION__, message: T) {
    
    #if DEBUG
    print("<\((fileName as NSString).lastPathComponent)>[\(line)]- \(MethodName): \(message)")
    #endif
}


